//////////////////////////////////////////////
// OutputTarget.h
// 
//////////////////////////////////////////////

/// Defines / Macros -------------------------

#pragma once

/// Forward decl -----------------------------

namespace nkDebug
{
	struct ClassDataHolder ;
}

namespace nkMemory
{
	class StringView ;
}

/// Includes ---------------------------------

// nkDebug
#include "../../Dll/DllDefines.h"

#include "OutputTargetKind.h"

/// Class ------------------------------------

namespace nkDebug
{
	class DLL_NKDEBUG_EXPORT OutputTarget final
	{			
		public  :

			// Functions
			// Constructor, destructor
			OutputTarget () noexcept ;
			~OutputTarget () ;

			// Setters
			void setTargetLogManager () ;
			void setTargetFile (nkMemory::StringView path) ;

			// Output
			void write (nkMemory::StringView s) ;

		private :

			// Attributes
			OUTPUT_TARGET_KIND _outputKind ;

			ClassDataHolder* _data ;
	} ;
}